/**
 */
package org.mro.grib.model.files.secondEdition.grids.impl;

import java.nio.ByteBuffer;

import org.eclipse.emf.common.notify.Notification;

import org.eclipse.emf.ecore.EClass;

import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.impl.EObjectImpl;

import org.mro.grib.model.files.secondEdition.grids.GridDefinitionTemplate31200;
import org.mro.grib.model.files.secondEdition.grids.GridsPackage;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model object '<em><b>Grid Definition Template31200</b></em>'.
 * <!-- end-user-doc -->
 * <p>
 * The following features are implemented:
 * <ul>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31200Impl#getNumberOfTimeSteps <em>Number Of Time Steps</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31200Impl#getUnitOfOffsetFromReferenceTime <em>Unit Of Offset From Reference Time</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31200Impl#getOffsetFromReferenceOfFirstTime <em>Offset From Reference Of First Time</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31200Impl#getTypeOfTimeIncrement <em>Type Of Time Increment</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31200Impl#getUnitOfTimeIncrement <em>Unit Of Time Increment</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31200Impl#getTimeIncrement <em>Time Increment</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31200Impl#getYear <em>Year</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31200Impl#getMonth <em>Month</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31200Impl#getDay <em>Day</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31200Impl#getHour <em>Hour</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31200Impl#getMinute <em>Minute</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31200Impl#getSecond <em>Second</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31200Impl#getNumberOfVerticalPoints <em>Number Of Vertical Points</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31200Impl#getPhysicalMeaningOfVerticalCoordinate <em>Physical Meaning Of Vertical Coordinate</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31200Impl#getVerticalDimensionCoordinateValuesDefinition <em>Vertical Dimension Coordinate Values Definition</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31200Impl#getNumberOfCoefficients <em>Number Of Coefficients</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.grids.impl.GridDefinitionTemplate31200Impl#getCoefficientsOffset <em>Coefficients Offset</em>}</li>
 * </ul>
 * </p>
 *
 * @generated
 */
public class GridDefinitionTemplate31200Impl extends EObjectImpl implements GridDefinitionTemplate31200 {
	/**
	 * The default value of the '{@link #getNumberOfTimeSteps() <em>Number Of Time Steps</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getNumberOfTimeSteps()
	 * @generated
	 * @ordered
	 */
	protected static final int NUMBER_OF_TIME_STEPS_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getNumberOfTimeSteps() <em>Number Of Time Steps</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getNumberOfTimeSteps()
	 * @generated
	 * @ordered
	 */
	protected int numberOfTimeSteps = NUMBER_OF_TIME_STEPS_EDEFAULT;

	/**
	 * The default value of the '{@link #getUnitOfOffsetFromReferenceTime() <em>Unit Of Offset From Reference Time</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getUnitOfOffsetFromReferenceTime()
	 * @generated
	 * @ordered
	 */
	protected static final byte UNIT_OF_OFFSET_FROM_REFERENCE_TIME_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getUnitOfOffsetFromReferenceTime() <em>Unit Of Offset From Reference Time</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getUnitOfOffsetFromReferenceTime()
	 * @generated
	 * @ordered
	 */
	protected byte unitOfOffsetFromReferenceTime = UNIT_OF_OFFSET_FROM_REFERENCE_TIME_EDEFAULT;

	/**
	 * The default value of the '{@link #getOffsetFromReferenceOfFirstTime() <em>Offset From Reference Of First Time</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getOffsetFromReferenceOfFirstTime()
	 * @generated
	 * @ordered
	 */
	protected static final int OFFSET_FROM_REFERENCE_OF_FIRST_TIME_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getOffsetFromReferenceOfFirstTime() <em>Offset From Reference Of First Time</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getOffsetFromReferenceOfFirstTime()
	 * @generated
	 * @ordered
	 */
	protected int offsetFromReferenceOfFirstTime = OFFSET_FROM_REFERENCE_OF_FIRST_TIME_EDEFAULT;

	/**
	 * The default value of the '{@link #getTypeOfTimeIncrement() <em>Type Of Time Increment</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getTypeOfTimeIncrement()
	 * @generated
	 * @ordered
	 */
	protected static final byte TYPE_OF_TIME_INCREMENT_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getTypeOfTimeIncrement() <em>Type Of Time Increment</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getTypeOfTimeIncrement()
	 * @generated
	 * @ordered
	 */
	protected byte typeOfTimeIncrement = TYPE_OF_TIME_INCREMENT_EDEFAULT;

	/**
	 * The default value of the '{@link #getUnitOfTimeIncrement() <em>Unit Of Time Increment</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getUnitOfTimeIncrement()
	 * @generated
	 * @ordered
	 */
	protected static final byte UNIT_OF_TIME_INCREMENT_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getUnitOfTimeIncrement() <em>Unit Of Time Increment</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getUnitOfTimeIncrement()
	 * @generated
	 * @ordered
	 */
	protected byte unitOfTimeIncrement = UNIT_OF_TIME_INCREMENT_EDEFAULT;

	/**
	 * The default value of the '{@link #getTimeIncrement() <em>Time Increment</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getTimeIncrement()
	 * @generated
	 * @ordered
	 */
	protected static final int TIME_INCREMENT_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getTimeIncrement() <em>Time Increment</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getTimeIncrement()
	 * @generated
	 * @ordered
	 */
	protected int timeIncrement = TIME_INCREMENT_EDEFAULT;

	/**
	 * The default value of the '{@link #getYear() <em>Year</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getYear()
	 * @generated
	 * @ordered
	 */
	protected static final short YEAR_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getYear() <em>Year</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getYear()
	 * @generated
	 * @ordered
	 */
	protected short year = YEAR_EDEFAULT;

	/**
	 * The default value of the '{@link #getMonth() <em>Month</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMonth()
	 * @generated
	 * @ordered
	 */
	protected static final byte MONTH_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getMonth() <em>Month</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMonth()
	 * @generated
	 * @ordered
	 */
	protected byte month = MONTH_EDEFAULT;

	/**
	 * The default value of the '{@link #getDay() <em>Day</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getDay()
	 * @generated
	 * @ordered
	 */
	protected static final byte DAY_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getDay() <em>Day</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getDay()
	 * @generated
	 * @ordered
	 */
	protected byte day = DAY_EDEFAULT;

	/**
	 * The default value of the '{@link #getHour() <em>Hour</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getHour()
	 * @generated
	 * @ordered
	 */
	protected static final byte HOUR_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getHour() <em>Hour</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getHour()
	 * @generated
	 * @ordered
	 */
	protected byte hour = HOUR_EDEFAULT;

	/**
	 * The default value of the '{@link #getMinute() <em>Minute</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMinute()
	 * @generated
	 * @ordered
	 */
	protected static final byte MINUTE_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getMinute() <em>Minute</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMinute()
	 * @generated
	 * @ordered
	 */
	protected byte minute = MINUTE_EDEFAULT;

	/**
	 * The default value of the '{@link #getSecond() <em>Second</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getSecond()
	 * @generated
	 * @ordered
	 */
	protected static final byte SECOND_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getSecond() <em>Second</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getSecond()
	 * @generated
	 * @ordered
	 */
	protected byte second = SECOND_EDEFAULT;

	/**
	 * The default value of the '{@link #getNumberOfVerticalPoints() <em>Number Of Vertical Points</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getNumberOfVerticalPoints()
	 * @generated
	 * @ordered
	 */
	protected static final int NUMBER_OF_VERTICAL_POINTS_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getNumberOfVerticalPoints() <em>Number Of Vertical Points</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getNumberOfVerticalPoints()
	 * @generated
	 * @ordered
	 */
	protected int numberOfVerticalPoints = NUMBER_OF_VERTICAL_POINTS_EDEFAULT;

	/**
	 * The default value of the '{@link #getPhysicalMeaningOfVerticalCoordinate() <em>Physical Meaning Of Vertical Coordinate</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getPhysicalMeaningOfVerticalCoordinate()
	 * @generated
	 * @ordered
	 */
	protected static final byte PHYSICAL_MEANING_OF_VERTICAL_COORDINATE_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getPhysicalMeaningOfVerticalCoordinate() <em>Physical Meaning Of Vertical Coordinate</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getPhysicalMeaningOfVerticalCoordinate()
	 * @generated
	 * @ordered
	 */
	protected byte physicalMeaningOfVerticalCoordinate = PHYSICAL_MEANING_OF_VERTICAL_COORDINATE_EDEFAULT;

	/**
	 * The default value of the '{@link #getVerticalDimensionCoordinateValuesDefinition() <em>Vertical Dimension Coordinate Values Definition</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getVerticalDimensionCoordinateValuesDefinition()
	 * @generated
	 * @ordered
	 */
	protected static final byte VERTICAL_DIMENSION_COORDINATE_VALUES_DEFINITION_EDEFAULT = 0x00;

	/**
	 * The cached value of the '{@link #getVerticalDimensionCoordinateValuesDefinition() <em>Vertical Dimension Coordinate Values Definition</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getVerticalDimensionCoordinateValuesDefinition()
	 * @generated
	 * @ordered
	 */
	protected byte verticalDimensionCoordinateValuesDefinition = VERTICAL_DIMENSION_COORDINATE_VALUES_DEFINITION_EDEFAULT;

	/**
	 * The default value of the '{@link #getNumberOfCoefficients() <em>Number Of Coefficients</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getNumberOfCoefficients()
	 * @generated
	 * @ordered
	 */
	protected static final short NUMBER_OF_COEFFICIENTS_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getNumberOfCoefficients() <em>Number Of Coefficients</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getNumberOfCoefficients()
	 * @generated
	 * @ordered
	 */
	protected short numberOfCoefficients = NUMBER_OF_COEFFICIENTS_EDEFAULT;

	/**
	 * The default value of the '{@link #getCoefficientsOffset() <em>Coefficients Offset</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getCoefficientsOffset()
	 * @generated
	 * @ordered
	 */
	protected static final long COEFFICIENTS_OFFSET_EDEFAULT = 0L;

	/**
	 * The cached value of the '{@link #getCoefficientsOffset() <em>Coefficients Offset</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getCoefficientsOffset()
	 * @generated
	 * @ordered
	 */
	protected long coefficientsOffset = COEFFICIENTS_OFFSET_EDEFAULT;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected GridDefinitionTemplate31200Impl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	protected EClass eStaticClass() {
		return GridsPackage.Literals.GRID_DEFINITION_TEMPLATE31200;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getNumberOfTimeSteps() {
		return numberOfTimeSteps;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setNumberOfTimeSteps(int newNumberOfTimeSteps) {
		int oldNumberOfTimeSteps = numberOfTimeSteps;
		numberOfTimeSteps = newNumberOfTimeSteps;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31200__NUMBER_OF_TIME_STEPS, oldNumberOfTimeSteps, numberOfTimeSteps));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getUnitOfOffsetFromReferenceTime() {
		return unitOfOffsetFromReferenceTime;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setUnitOfOffsetFromReferenceTime(byte newUnitOfOffsetFromReferenceTime) {
		byte oldUnitOfOffsetFromReferenceTime = unitOfOffsetFromReferenceTime;
		unitOfOffsetFromReferenceTime = newUnitOfOffsetFromReferenceTime;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31200__UNIT_OF_OFFSET_FROM_REFERENCE_TIME, oldUnitOfOffsetFromReferenceTime, unitOfOffsetFromReferenceTime));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getOffsetFromReferenceOfFirstTime() {
		return offsetFromReferenceOfFirstTime;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setOffsetFromReferenceOfFirstTime(int newOffsetFromReferenceOfFirstTime) {
		int oldOffsetFromReferenceOfFirstTime = offsetFromReferenceOfFirstTime;
		offsetFromReferenceOfFirstTime = newOffsetFromReferenceOfFirstTime;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31200__OFFSET_FROM_REFERENCE_OF_FIRST_TIME, oldOffsetFromReferenceOfFirstTime, offsetFromReferenceOfFirstTime));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getTypeOfTimeIncrement() {
		return typeOfTimeIncrement;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setTypeOfTimeIncrement(byte newTypeOfTimeIncrement) {
		byte oldTypeOfTimeIncrement = typeOfTimeIncrement;
		typeOfTimeIncrement = newTypeOfTimeIncrement;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31200__TYPE_OF_TIME_INCREMENT, oldTypeOfTimeIncrement, typeOfTimeIncrement));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getUnitOfTimeIncrement() {
		return unitOfTimeIncrement;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setUnitOfTimeIncrement(byte newUnitOfTimeIncrement) {
		byte oldUnitOfTimeIncrement = unitOfTimeIncrement;
		unitOfTimeIncrement = newUnitOfTimeIncrement;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31200__UNIT_OF_TIME_INCREMENT, oldUnitOfTimeIncrement, unitOfTimeIncrement));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getTimeIncrement() {
		return timeIncrement;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setTimeIncrement(int newTimeIncrement) {
		int oldTimeIncrement = timeIncrement;
		timeIncrement = newTimeIncrement;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31200__TIME_INCREMENT, oldTimeIncrement, timeIncrement));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public short getYear() {
		return year;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setYear(short newYear) {
		short oldYear = year;
		year = newYear;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31200__YEAR, oldYear, year));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getMonth() {
		return month;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMonth(byte newMonth) {
		byte oldMonth = month;
		month = newMonth;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31200__MONTH, oldMonth, month));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getDay() {
		return day;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setDay(byte newDay) {
		byte oldDay = day;
		day = newDay;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31200__DAY, oldDay, day));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getHour() {
		return hour;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setHour(byte newHour) {
		byte oldHour = hour;
		hour = newHour;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31200__HOUR, oldHour, hour));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getMinute() {
		return minute;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMinute(byte newMinute) {
		byte oldMinute = minute;
		minute = newMinute;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31200__MINUTE, oldMinute, minute));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getSecond() {
		return second;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setSecond(byte newSecond) {
		byte oldSecond = second;
		second = newSecond;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31200__SECOND, oldSecond, second));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getNumberOfVerticalPoints() {
		return numberOfVerticalPoints;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setNumberOfVerticalPoints(int newNumberOfVerticalPoints) {
		int oldNumberOfVerticalPoints = numberOfVerticalPoints;
		numberOfVerticalPoints = newNumberOfVerticalPoints;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31200__NUMBER_OF_VERTICAL_POINTS, oldNumberOfVerticalPoints, numberOfVerticalPoints));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getPhysicalMeaningOfVerticalCoordinate() {
		return physicalMeaningOfVerticalCoordinate;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setPhysicalMeaningOfVerticalCoordinate(byte newPhysicalMeaningOfVerticalCoordinate) {
		byte oldPhysicalMeaningOfVerticalCoordinate = physicalMeaningOfVerticalCoordinate;
		physicalMeaningOfVerticalCoordinate = newPhysicalMeaningOfVerticalCoordinate;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31200__PHYSICAL_MEANING_OF_VERTICAL_COORDINATE, oldPhysicalMeaningOfVerticalCoordinate, physicalMeaningOfVerticalCoordinate));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public byte getVerticalDimensionCoordinateValuesDefinition() {
		return verticalDimensionCoordinateValuesDefinition;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setVerticalDimensionCoordinateValuesDefinition(byte newVerticalDimensionCoordinateValuesDefinition) {
		byte oldVerticalDimensionCoordinateValuesDefinition = verticalDimensionCoordinateValuesDefinition;
		verticalDimensionCoordinateValuesDefinition = newVerticalDimensionCoordinateValuesDefinition;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31200__VERTICAL_DIMENSION_COORDINATE_VALUES_DEFINITION, oldVerticalDimensionCoordinateValuesDefinition, verticalDimensionCoordinateValuesDefinition));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public short getNumberOfCoefficients() {
		return numberOfCoefficients;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setNumberOfCoefficients(short newNumberOfCoefficients) {
		short oldNumberOfCoefficients = numberOfCoefficients;
		numberOfCoefficients = newNumberOfCoefficients;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31200__NUMBER_OF_COEFFICIENTS, oldNumberOfCoefficients, numberOfCoefficients));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public long getCoefficientsOffset() {
		return coefficientsOffset;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setCoefficientsOffset(long newCoefficientsOffset) {
		long oldCoefficientsOffset = coefficientsOffset;
		coefficientsOffset = newCoefficientsOffset;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, GridsPackage.GRID_DEFINITION_TEMPLATE31200__COEFFICIENTS_OFFSET, oldCoefficientsOffset, coefficientsOffset));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Object eGet(int featureID, boolean resolve, boolean coreType) {
		switch (featureID) {
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__NUMBER_OF_TIME_STEPS:
				return getNumberOfTimeSteps();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__UNIT_OF_OFFSET_FROM_REFERENCE_TIME:
				return getUnitOfOffsetFromReferenceTime();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__OFFSET_FROM_REFERENCE_OF_FIRST_TIME:
				return getOffsetFromReferenceOfFirstTime();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__TYPE_OF_TIME_INCREMENT:
				return getTypeOfTimeIncrement();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__UNIT_OF_TIME_INCREMENT:
				return getUnitOfTimeIncrement();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__TIME_INCREMENT:
				return getTimeIncrement();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__YEAR:
				return getYear();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__MONTH:
				return getMonth();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__DAY:
				return getDay();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__HOUR:
				return getHour();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__MINUTE:
				return getMinute();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__SECOND:
				return getSecond();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__NUMBER_OF_VERTICAL_POINTS:
				return getNumberOfVerticalPoints();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__PHYSICAL_MEANING_OF_VERTICAL_COORDINATE:
				return getPhysicalMeaningOfVerticalCoordinate();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__VERTICAL_DIMENSION_COORDINATE_VALUES_DEFINITION:
				return getVerticalDimensionCoordinateValuesDefinition();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__NUMBER_OF_COEFFICIENTS:
				return getNumberOfCoefficients();
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__COEFFICIENTS_OFFSET:
				return getCoefficientsOffset();
		}
		return super.eGet(featureID, resolve, coreType);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eSet(int featureID, Object newValue) {
		switch (featureID) {
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__NUMBER_OF_TIME_STEPS:
				setNumberOfTimeSteps((Integer)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__UNIT_OF_OFFSET_FROM_REFERENCE_TIME:
				setUnitOfOffsetFromReferenceTime((Byte)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__OFFSET_FROM_REFERENCE_OF_FIRST_TIME:
				setOffsetFromReferenceOfFirstTime((Integer)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__TYPE_OF_TIME_INCREMENT:
				setTypeOfTimeIncrement((Byte)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__UNIT_OF_TIME_INCREMENT:
				setUnitOfTimeIncrement((Byte)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__TIME_INCREMENT:
				setTimeIncrement((Integer)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__YEAR:
				setYear((Short)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__MONTH:
				setMonth((Byte)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__DAY:
				setDay((Byte)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__HOUR:
				setHour((Byte)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__MINUTE:
				setMinute((Byte)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__SECOND:
				setSecond((Byte)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__NUMBER_OF_VERTICAL_POINTS:
				setNumberOfVerticalPoints((Integer)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__PHYSICAL_MEANING_OF_VERTICAL_COORDINATE:
				setPhysicalMeaningOfVerticalCoordinate((Byte)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__VERTICAL_DIMENSION_COORDINATE_VALUES_DEFINITION:
				setVerticalDimensionCoordinateValuesDefinition((Byte)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__NUMBER_OF_COEFFICIENTS:
				setNumberOfCoefficients((Short)newValue);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__COEFFICIENTS_OFFSET:
				setCoefficientsOffset((Long)newValue);
				return;
		}
		super.eSet(featureID, newValue);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eUnset(int featureID) {
		switch (featureID) {
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__NUMBER_OF_TIME_STEPS:
				setNumberOfTimeSteps(NUMBER_OF_TIME_STEPS_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__UNIT_OF_OFFSET_FROM_REFERENCE_TIME:
				setUnitOfOffsetFromReferenceTime(UNIT_OF_OFFSET_FROM_REFERENCE_TIME_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__OFFSET_FROM_REFERENCE_OF_FIRST_TIME:
				setOffsetFromReferenceOfFirstTime(OFFSET_FROM_REFERENCE_OF_FIRST_TIME_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__TYPE_OF_TIME_INCREMENT:
				setTypeOfTimeIncrement(TYPE_OF_TIME_INCREMENT_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__UNIT_OF_TIME_INCREMENT:
				setUnitOfTimeIncrement(UNIT_OF_TIME_INCREMENT_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__TIME_INCREMENT:
				setTimeIncrement(TIME_INCREMENT_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__YEAR:
				setYear(YEAR_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__MONTH:
				setMonth(MONTH_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__DAY:
				setDay(DAY_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__HOUR:
				setHour(HOUR_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__MINUTE:
				setMinute(MINUTE_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__SECOND:
				setSecond(SECOND_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__NUMBER_OF_VERTICAL_POINTS:
				setNumberOfVerticalPoints(NUMBER_OF_VERTICAL_POINTS_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__PHYSICAL_MEANING_OF_VERTICAL_COORDINATE:
				setPhysicalMeaningOfVerticalCoordinate(PHYSICAL_MEANING_OF_VERTICAL_COORDINATE_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__VERTICAL_DIMENSION_COORDINATE_VALUES_DEFINITION:
				setVerticalDimensionCoordinateValuesDefinition(VERTICAL_DIMENSION_COORDINATE_VALUES_DEFINITION_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__NUMBER_OF_COEFFICIENTS:
				setNumberOfCoefficients(NUMBER_OF_COEFFICIENTS_EDEFAULT);
				return;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__COEFFICIENTS_OFFSET:
				setCoefficientsOffset(COEFFICIENTS_OFFSET_EDEFAULT);
				return;
		}
		super.eUnset(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public boolean eIsSet(int featureID) {
		switch (featureID) {
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__NUMBER_OF_TIME_STEPS:
				return numberOfTimeSteps != NUMBER_OF_TIME_STEPS_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__UNIT_OF_OFFSET_FROM_REFERENCE_TIME:
				return unitOfOffsetFromReferenceTime != UNIT_OF_OFFSET_FROM_REFERENCE_TIME_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__OFFSET_FROM_REFERENCE_OF_FIRST_TIME:
				return offsetFromReferenceOfFirstTime != OFFSET_FROM_REFERENCE_OF_FIRST_TIME_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__TYPE_OF_TIME_INCREMENT:
				return typeOfTimeIncrement != TYPE_OF_TIME_INCREMENT_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__UNIT_OF_TIME_INCREMENT:
				return unitOfTimeIncrement != UNIT_OF_TIME_INCREMENT_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__TIME_INCREMENT:
				return timeIncrement != TIME_INCREMENT_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__YEAR:
				return year != YEAR_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__MONTH:
				return month != MONTH_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__DAY:
				return day != DAY_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__HOUR:
				return hour != HOUR_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__MINUTE:
				return minute != MINUTE_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__SECOND:
				return second != SECOND_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__NUMBER_OF_VERTICAL_POINTS:
				return numberOfVerticalPoints != NUMBER_OF_VERTICAL_POINTS_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__PHYSICAL_MEANING_OF_VERTICAL_COORDINATE:
				return physicalMeaningOfVerticalCoordinate != PHYSICAL_MEANING_OF_VERTICAL_COORDINATE_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__VERTICAL_DIMENSION_COORDINATE_VALUES_DEFINITION:
				return verticalDimensionCoordinateValuesDefinition != VERTICAL_DIMENSION_COORDINATE_VALUES_DEFINITION_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__NUMBER_OF_COEFFICIENTS:
				return numberOfCoefficients != NUMBER_OF_COEFFICIENTS_EDEFAULT;
			case GridsPackage.GRID_DEFINITION_TEMPLATE31200__COEFFICIENTS_OFFSET:
				return coefficientsOffset != COEFFICIENTS_OFFSET_EDEFAULT;
		}
		return super.eIsSet(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public String toString() {
		if (eIsProxy()) return super.toString();

		StringBuffer result = new StringBuffer(super.toString());
		result.append(" (numberOfTimeSteps: "); //$NON-NLS-1$
		result.append(numberOfTimeSteps);
		result.append(", unitOfOffsetFromReferenceTime: "); //$NON-NLS-1$
		result.append(unitOfOffsetFromReferenceTime);
		result.append(", offsetFromReferenceOfFirstTime: "); //$NON-NLS-1$
		result.append(offsetFromReferenceOfFirstTime);
		result.append(", typeOfTimeIncrement: "); //$NON-NLS-1$
		result.append(typeOfTimeIncrement);
		result.append(", unitOfTimeIncrement: "); //$NON-NLS-1$
		result.append(unitOfTimeIncrement);
		result.append(", timeIncrement: "); //$NON-NLS-1$
		result.append(timeIncrement);
		result.append(", year: "); //$NON-NLS-1$
		result.append(year);
		result.append(", month: "); //$NON-NLS-1$
		result.append(month);
		result.append(", day: "); //$NON-NLS-1$
		result.append(day);
		result.append(", hour: "); //$NON-NLS-1$
		result.append(hour);
		result.append(", minute: "); //$NON-NLS-1$
		result.append(minute);
		result.append(", second: "); //$NON-NLS-1$
		result.append(second);
		result.append(", numberOfVerticalPoints: "); //$NON-NLS-1$
		result.append(numberOfVerticalPoints);
		result.append(", physicalMeaningOfVerticalCoordinate: "); //$NON-NLS-1$
		result.append(physicalMeaningOfVerticalCoordinate);
		result.append(", verticalDimensionCoordinateValuesDefinition: "); //$NON-NLS-1$
		result.append(verticalDimensionCoordinateValuesDefinition);
		result.append(", numberOfCoefficients: "); //$NON-NLS-1$
		result.append(numberOfCoefficients);
		result.append(", coefficientsOffset: "); //$NON-NLS-1$
		result.append(coefficientsOffset);
		result.append(')');
		return result.toString();
	}

	/* (non-Javadoc)
	 * @see org.mro.grib.model.files.secondEdition.grids.IGridDefinition#initialise(java.nio.ByteBuffer)
	 */
	@Override
	public void initialise(ByteBuffer buffer) {
		numberOfTimeSteps = buffer.getInt();
		unitOfOffsetFromReferenceTime = buffer.get();
		offsetFromReferenceOfFirstTime = buffer.getInt();
		typeOfTimeIncrement = buffer.get();
		unitOfTimeIncrement = buffer.get();
		timeIncrement = buffer.getInt();
		year = buffer.getShort();
		month = buffer.get();
		day = buffer.get();
		hour = buffer.get();
		minute = buffer.get();
		second = buffer.get();
		numberOfVerticalPoints = buffer.getInt();
		physicalMeaningOfVerticalCoordinate = buffer.get();
		verticalDimensionCoordinateValuesDefinition = buffer.get();
		numberOfCoefficients = buffer.getShort();
		coefficientsOffset = buffer.position();
	}

} //GridDefinitionTemplate31200Impl
